#include "mainwindow.h"
#include "./ui_mainwindow.h"
#include <QMenu>
#include <QToolBar>
#include <QDebug>
#include <QMessageBox>
#include <QIcon>
#include <QLabel>
#include <QDockWidget>
#include <QTextEdit>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);


    QMenuBar *mb = menuBar();


    QMenu *m1 = mb->addMenu("文件");
    QMenu *m2 = mb->addMenu("编辑");
    QMenu *m3 = mb->addMenu("工具");

    QPixmap pixmap(":/tb/add.png");
    pixmap = pixmap.scaled(12, 12, Qt::KeepAspectRatio, Qt::SmoothTransformation);
    QIcon aicon(pixmap); // 假设你有一个PNG图标文件，这里替换为实际路径
    QAction *a1 = m1->addAction("新建");
    a1->setIcon(aicon);
    a1->setToolTip("新建");

    QAction *a2 = m1->addAction("保存");
    QAction *a3 = m1->addAction("另存为");
    QAction *a4 = m1->addAction("退出");

    setMenuBar(mb);



    // 给菜单项添加处理函数
    // 连接QAction的triggered()信号到MainWindow的onOpen()槽
    connect(a1, &QAction::triggered, this, &MainWindow::onNew);
    connect(a2,&QAction::triggered,this,&MainWindow::onSave);
    connect(a3, &QAction::triggered, this, &MainWindow::onSaveTo);
    connect(a4, &QAction::triggered, this, &MainWindow::onClose);


    // 工具栏
    QToolBar *tb = new QToolBar();
    addToolBar(Qt::TopToolBarArea,tb);


    // 可以浮动，可以移动
    tb->setFloatable(true);
    tb->setMovable(true);

    // 工具栏，可以放在那些地方，上面，左面，右面
    tb->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea | Qt::TopToolBarArea);

    // 添加工具项
    tb->addAction(a1);
    tb->addAction(a2);
    tb->addAction(a3);
    tb->addAction(a4);

    // 工具栏添加图标
    QIcon icon(":/tb/item1_48.png"); // 假设你有一个PNG图标文件，这里替换为实际路径
    QAction *action = new QAction(icon, "ma", this); // 创建一个QAction并设置图标和文本

    tb->addAction(action); // 将QAction添加到工具栏

    // 状态栏
    QStatusBar *stBar = statusBar();
    setStatusBar(stBar);

    // 放标签
    QLabel *lb = new QLabel("提示信息",this);
    lb->resize(200,35);
    stBar->addWidget(lb);


    QLabel *lb1 = new QLabel("又一个提示信息",this);
    stBar->addWidget(lb1);

    QLabel *lb2 = new QLabel("右侧提示信息",this);
    stBar->addPermanentWidget(lb2);

    // 铆接部件,可以有多个
    QDockWidget *docWidget = new QDockWidget("浮动",this);
    addDockWidget(Qt::BottomDockWidgetArea,docWidget);
    // 设置后期的停靠范围
    docWidget->setAllowedAreas(Qt::TopDockWidgetArea | Qt::BottomDockWidgetArea);

    QDockWidget *docWidget1 = new QDockWidget("浮动1",this);
    addDockWidget(Qt::LeftDockWidgetArea,docWidget1);

    QDockWidget *docWidget2 = new QDockWidget("浮动2",this);
    addDockWidget(Qt::RightDockWidgetArea,docWidget2);

    // 设置中心部件
    QTextEdit *edit = new QTextEdit(this);
    setCentralWidget(edit);

}

MainWindow::~MainWindow()
{
    delete ui;
}

/**
 *
 * @brief MainWindow::onSave
 */
void MainWindow::onSave()
{
    QMessageBox::information(this,"标题","保存成功");
}

void MainWindow::onClose()
{
    this->close();
    QMessageBox::information(this,"标题","关闭程序");
}

void MainWindow::onNew()
{
    QMessageBox::information(this,"标题","新建");
}

void MainWindow::onSaveTo()
{
    QMessageBox::information(this,"标题","另存为");
}
